home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86jan.arc / LCM.BAS < prev    next >
BASIC Source File  |  1985-12-27  |  2KB  |  41 lines

  1. 10 '**********************************************
  2. 20 '*   LEAST COMMON MULTIPLE ALGORITHM          *
  3. 30 '*           BY ROBERT T. KUROSAKA            *
  4. 40 '**********************************************
  5. 50 CLS
  6. 60 PRINT "This program calculates the least common multiple"
  7. 70 PRINT "of a set of positive integers."
  8. 80 PRINT
  9. 90 INPUT "HOW MANY INTEGERS ARE IN THE SET";TERMS:TERMS=INT(ABS(TERMS))
  10. 100 IF TERMS<2 THEN 400
  11. 110 REM NUMBER ARRAY HOLDS THE SET OF INTEGERS FOR WHICH THE LCM IS SOUGHT.
  12. 120 DIM NUMBER(TERMS)
  13. 130 PRINT :PRINT "ENTER THE INTEGERS ONE AT A TIME."
  14. 140 FOR I=1 TO TERMS
  15. 150     INPUT NUMBER(I)
  16. 160     NUMBER(I)=INT(ABS(NUMBER(I)))
  17. 170     IF NUMBER(I)=0 THEN PRINT "ILLEGAL ENTRY.":GOTO 150
  18. 180 NEXT I
  19. 190 REM BEGIN LCM PROCEDURE.
  20. 200 LCM=NUMBER(1)       'THE LCM OF A SINGLE NUMBER IS ITSELF.
  21. 210 FOR I=2 TO TERMS
  22. 220     REM FIND GCD OF ACTIVE ENTRY AND WHAT PRECEDED IT (GCD WILL BE STORED IN           `DIVIDEND' BECAUSE LINE 290 ASSIGNS LAST VALID DIVISOR TO DIVIDEND).
  23. 230     DIVISOR=NUMBER(I):DIVIDEND=LCM
  24. 240     REM LINES 250-300 ARE THE SAME AS 450-500 OF THE GCD ROUTINE.
  25. 250     IF DIVISOR>DIVIDEND THEN SWAP DIVISOR,DIVIDEND
  26. 260     WHILE DIVISOR>0
  27. 270             QUOTIENT=INT(DIVIDEND/DIVISOR)
  28. 280             REMAINDER=DIVIDEND-DIVISOR*QUOTIENT
  29. 290             DIVIDEND=DIVISOR:DIVISOR=REMAINDER
  30. 300     WEND
  31. 310     LCM=NUMBER(I)*LCM/DIVIDEND
  32. 320     REM THE LAST LCM WILL BE LCM OF ALL THE ENTRIES.
  33. 330 NEXT I
  34. 340 PRINT :PRINT
  35. 350 PRINT "THE LEAST COMMON MULTIPLE OF";
  36. 360 FOR I=1 TO TERMS
  37. 370     PRINT NUMBER(I);
  38. 380 NEXT I
  39. 390 PRINT "IS";LCM
  40. 400 END
  41.